package com.nexmo.hangman.domain.dto;

import com.fasterxml.jackson.annotation.JsonInclude;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;

import java.util.List;
import java.util.Map;
import java.util.Set;

@JsonInclude(JsonInclude.Include.NON_NULL)
public class GameStatusDto {

    private Long gameId;
    private Integer livesRemaining;
    private Integer hiddenWordLength;
    private Map<Character, List<Integer>> guessed;
    private List<Character> introduced;

    public Long getGameId() {
        return gameId;
    }

    public void setGameId(Long gameId) {
        this.gameId = gameId;
    }

    public Integer getLivesRemaining() {
        return livesRemaining;
    }

    public void setLivesRemaining(Integer livesRemaining) {
        this.livesRemaining = livesRemaining;
    }

    public void setHiddenWordLength(Integer hiddenWordLength) {
        this.hiddenWordLength = hiddenWordLength;
    }

    public Integer getHiddenWordLength() {
        return hiddenWordLength;
    }

    public void setGuessed(Map<Character, List<Integer>> guessed) {
        this.guessed = guessed;
    }

    public Map<Character, List<Integer>> getGuessed() {
        return guessed;
    }

    public void setIntroduced(List<Character> introduced) {
        this.introduced = introduced;
    }

    public List<Character> getIntroduced() {
        return introduced;
    }

    @Override
    public boolean equals(Object obj) {
        return EqualsBuilder.reflectionEquals(this, obj);
    }

    @Override
    public int hashCode() {
        return HashCodeBuilder.reflectionHashCode(this);
    }
}
